Compile, Provided, Runtime, Test, এবং System Scope

Maven এর Dependency Scope - ম্যাভেন (Maven) - Java Technologies

255

Maven এর Dependency Scope বিভিন্ন ধরণের ডিপেনডেন্সির আচরণ এবং ব্যবহারকে নিয়ন্ত্রণ করে। বিভিন্ন Scope ডিপেনডেন্সি ব্যবস্থাপনা, কম্পাইল, টেস্ট এবং রানটাইম পর্যায়ে কিভাবে ডিপেনডেন্সি কার্যকরী হবে তা নির্ধারণ করে।

এখানে আমরা Compile, Provided, Runtime, Test, এবং System Scope এর বিষয়ে বিস্তারিত আলোচনা করব এবং কীভাবে এগুলি Maven প্রকল্পে কাজ করে তা দেখাব।

১. Compile Scope

Compile Scope হল ডিফল্ট স্কোপ যা Maven এর মধ্যে ব্যবহৃত হয় যদি অন্য কোনো স্কোপ উল্লেখ না করা হয়। এই স্কোপে নির্দিষ্ট করা ডিপেনডেন্সি কম্পাইল এবং রানটাইম উভয় পর্যায়ে উপলব্ধ থাকে। এই স্কোপে থাকা ডিপেনডেন্সি আপনার প্রকল্পের সোর্স কোড কম্পাইল করার সময় এবং প্রকল্প রান করার সময় ব্যবহার করা হবে।

ব্যবহার:

  • এটি কোড কম্পাইল এবং রানটাইম উভয় ক্ষেত্রেই প্রযোজ্য।
  • এর মাধ্যমে নির্দিষ্ট লাইব্রেরি বা ডিপেনডেন্সি সকল পর্যায়ে প্রয়োজন হয়।

উদাহরণ:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>library</artifactId>
    <version>1.0.0</version>
    <scope>compile</scope>
</dependency>

এখানে compile স্কোপের ডিপেনডেন্সি উভয় কম্পাইল এবং রানটাইম পর্যায়ে পাওয়া যাবে।

২. Provided Scope

Provided Scope হল এমন একটি স্কোপ যা শুধুমাত্র কম্পাইল এবং টেস্ট সময় প্রয়োজন হয়, কিন্তু রানটাইম সময় আপনাকে সেই ডিপেনডেন্সি সরবরাহ করতে হবে। এই স্কোপ সাধারণত সার্ভার নির্ভর ডিপেনডেন্সির জন্য ব্যবহৃত হয়, যেমন Servlet API বা JSP API, যেখানে সেই সার্ভিসটি আপনার অ্যাপ্লিকেশনে সরবরাহ করা না হলেও সার্ভার বা কন্টেইনারে এটি সরবরাহ করা থাকে।

ব্যবহার:

  • শুধুমাত্র কম্পাইল এবং টেস্ট পর্যায়ে প্রয়োজন।
  • রানটাইম সময় আপনাকে সেই ডিপেনডেন্সি সরবরাহ করতে হবে।
  • এটি প্রধানত ওয়েব অ্যাপ্লিকেশন এবং J2EE প্রোজেক্টে ব্যবহৃত হয়।

উদাহরণ:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>

এখানে Servlet API কম্পাইল এবং টেস্টের সময় প্রয়োজন, কিন্তু এটি সরাসরি অ্যাপ্লিকেশন দ্বারা সরবরাহিত হবে না, কারণ এটি সার্ভার দ্বারা সরবরাহ করা হয়।

৩. Runtime Scope

Runtime Scope হল এমন একটি স্কোপ যা রানটাইম সময় প্রয়োজন, তবে কম্পাইল সময় নয়। এটি সাধারণত সেই ডিপেনডেন্সির জন্য ব্যবহৃত হয় যেগুলি প্রকল্প কম্পাইল করার সময় প্রয়োজন হয় না, তবে রানটাইম সময় অ্যাপ্লিকেশন চালানোর জন্য প্রয়োজন।

ব্যবহার:

  • শুধুমাত্র রানটাইম পর্যায়ে প্রয়োজন।
  • আপনি এটি কম্পাইল সময়ে ব্যবহার করবেন না।

উদাহরণ:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
    <scope>runtime</scope>
</dependency>

এখানে, commons-io শুধুমাত্র রানটাইমে প্রয়োজন, কিন্তু এটি কম্পাইলিং এর সময় ব্যবহার করা হবে না।

৪. Test Scope

Test Scope হল এমন একটি স্কোপ যা শুধুমাত্র টেস্টিং সময়ে ব্যবহৃত হয়। এটি এমন ডিপেনডেন্সি জন্য ব্যবহৃত হয় যেগুলি শুধুমাত্র আপনার টেস্ট ক্লাসের জন্য প্রয়োজন এবং প্রোডাকশন কোডে তাদের কোন প্রভাব নেই।

ব্যবহার:

  • শুধুমাত্র টেস্টিং সময় প্রয়োজন।
  • প্রোডাকশন কোডে ডিপেনডেন্সি অন্তর্ভুক্ত থাকে না।

উদাহরণ:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.7.1</version>
    <scope>test</scope>
</dependency>

এখানে JUnit ডিপেনডেন্সি শুধুমাত্র টেস্টিং সময় ব্যবহার করা হবে এবং এটি রানটাইম বা কম্পাইল পর্যায়ে অন্তর্ভুক্ত হবে না।

৫. System Scope

System Scope হল একটি বিশেষ স্কোপ যা আপনার প্রকল্পের জন্য সিস্টেম নির্দিষ্ট ডিপেনডেন্সি ব্যবহারের ক্ষেত্রে ব্যবহৃত হয়। এটি একটি হার্ড ডিপেনডেন্সি যা সাধারণত লোকাল মেশিন বা সিস্টেমে থাকে এবং Maven এর রিপোজিটরি থেকে ডাউনলোড করা হয় না। এই স্কোপের ডিপেনডেন্সির পাথ (path) সরাসরি নির্দিষ্ট করা হয়।

ব্যবহার:

  • লোকাল সিস্টেমে কোনো নির্দিষ্ট ফাইল বা লাইব্রেরি ব্যবহারের ক্ষেত্রে ব্যবহৃত হয়।
  • এটি Maven রিপোজিটরি থেকে ডাউনলোড করা হয় না, বরং আপনার লোকাল সিস্টেমের কোনও নির্দিষ্ট পাথ থেকে সরবরাহ করা হয়।

উদাহরণ:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>local-library</artifactId>
    <version>1.0.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/local-library.jar</systemPath>
</dependency>

এখানে, local-library.jar ফাইলটি লোকাল সিস্টেম থেকে সরাসরি ব্যবহার করা হচ্ছে এবং Maven রিপোজিটরি থেকে এটি ডাউনলোড হবে না।


সারাংশ

Maven এ Scope ডিপেনডেন্সি ব্যবস্থাপনার গুরুত্বপূর্ণ অংশ। এটি নিয়ন্ত্রণ করে কিভাবে ডিপেনডেন্সি বিভিন্ন পর্যায়ে ব্যবহৃত হবে:

  • Compile Scope: ডিপেনডেন্সি কম্পাইল এবং রানটাইম উভয় সময়ে ব্যবহারযোগ্য।
  • Provided Scope: শুধুমাত্র কম্পাইল এবং টেস্ট সময়ে ব্যবহৃত, রানটাইমে সরবরাহ করা হয় সার্ভার দ্বারা।
  • Runtime Scope: রানটাইম সময়ে ব্যবহৃত, তবে কম্পাইল সময়ে প্রয়োজন হয় না।
  • Test Scope: শুধুমাত্র টেস্টিং সময়ে ব্যবহৃত।
  • System Scope: সিস্টেম নির্দিষ্ট ফাইলের জন্য ব্যবহৃত, যা লোকাল সিস্টেম থেকে সরাসরি ব্যবহৃত হয়।

Maven-এ সঠিক Scope নির্বাচন করা প্রোজেক্টের ডিপেনডেন্সি ব্যবস্থাপনা এবং পারফরম্যান্সে বড় প্রভাব ফেলতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...